package com.winit.openapi.wh.validator;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.winit.openapi.util.ValidateUtil;

/**
 * 越库信息校验器
 * 
 * @version
 * 
 * <pre>
 * Author	Version		Date		Changes
 * qiyongkang 	1.0  		2017年8月25日 	Created
 * </pre>
 * 
 * @since 1.
 */
public class InboundCrossDockValidator {

    /**
     * 校验新增越库信息.
     */
    public static void validateCreateInboundCrossDock(JSONObject json) {
        // 入库单号
        ValidateUtil.validNotNull(json, "orderNo");
        // 存储仓编码
        ValidateUtil.validNotNull(json, "storageWarehouseCode");
        // 存储仓名称
        ValidateUtil.validNotNull(json, "storageWarehouseName");
        // 预计上架时间
        ValidateUtil.validNotNull(json, "estimateShelveTime");
        // 预计包裹数量
        ValidateUtil.validNotNull(json, "estimatePackageQty");
        // 预计商品数量
        ValidateUtil.validNotNull(json, "estimateSkuQty");
        // 预计单品数量
        ValidateUtil.validNotNull(json, "estimateItemQty");
        // 预计总重量
        ValidateUtil.validNotNull(json, "estimateWeight");
        // 预计总体积
        ValidateUtil.validNotNull(json, "estimateVolume");
        // 新增还是编辑
        ValidateUtil.validNotNull(json, "optType");
    }

    /**
     * 校验新增越库商品信息.
     */
    public static void validateCreateInboundCrossDockMerchandises(JSONObject json) {
        // 商品信息不能为空
        ValidateUtil.validNotNull(json, "crossDockMerchandises");

        if (json.getJSONArray("crossDockMerchandises") != null
            && json.getJSONArray("crossDockMerchandises").size() > 0) {
            JSONArray jsonArray = json.getJSONArray("crossDockMerchandises");
            for (Object object : jsonArray) {
                JSONObject jsonObj = (JSONObject) object;
                // 商品条码
                ValidateUtil.validNotNull(jsonObj, "merchandiseSerno");

                // 商品编码
                ValidateUtil.validNotNull(jsonObj, "merchandiseCode");

                // 中文名称
                ValidateUtil.validNotNull(jsonObj, "cnName");

                // 英文名称
                ValidateUtil.validNotNull(jsonObj, "enName");

                // 预计单品数
                ValidateUtil.validNotNull(jsonObj, "estimateItemQty");

                // 计划越库数
                ValidateUtil.validNotNull(jsonObj, "planItemQty");

                // 长
                ValidateUtil.validNotNull(jsonObj, "length");

                // 宽
                ValidateUtil.validNotNull(jsonObj, "width");

                // 高
                ValidateUtil.validNotNull(jsonObj, "height");
                
                // 体积
                ValidateUtil.validNotNull(jsonObj, "volume");
                
                // 重量
                ValidateUtil.validNotNull(jsonObj, "weight");
                
                // 规格
//                ValidateUtil.validNotNull(jsonObj, "specification");
                
                // 单品数
                ValidateUtil.validNotNull(jsonObj, "itemQty");
                
                // 日均销量
                ValidateUtil.validNotNull(jsonObj, "dayAvgSales");
                
                // doi
                ValidateUtil.validNotNull(jsonObj, "doi");
                
                // 发货仓库存
                ValidateUtil.validNotNull(jsonObj, "usableQty");
                
                // 推荐转存数
                ValidateUtil.validNotNull(jsonObj, "recommendQty");
            }
        }
    }

    /**
     * 校验导入的入库商品信息.
     * 
     * @param json
     */
    public static void validateImportCrossDockMers(JSONObject json) {
        // 商品信息不能为空
        ValidateUtil.validNotNull(json, "crossDockMerchandises");
        if (json.getJSONArray("crossDockMerchandises") != null
            && json.getJSONArray("crossDockMerchandises").size() > 0) {
            JSONArray jsonArray = json.getJSONArray("crossDockMerchandises");
            for (Object object : jsonArray) {
                JSONObject jsonObj = (JSONObject) object;
                // 商品编码
                ValidateUtil.validNotNull(jsonObj, "merchandiseCode");

                // 预计单品数
                ValidateUtil.validNotNull(jsonObj, "planItemQty");
            }
        }

    }
    
    /**
     * 
     * 校验预估费用所需字段.
     * @param json
     */
    public static void validateEstimateCrossFee(JSONObject json) {
        //主键
        ValidateUtil.validNotNull(json, "crossDockId");
        // 入库单号
        ValidateUtil.validNotNull(json, "orderNo");
        // 预计总重量
        ValidateUtil.validNotNull(json, "estimateWeight");
        // 预计总体积
        ValidateUtil.validNotNull(json, "estimateVolume");
    }
}
